package com.zxy.leetcode._00000_00099._00080_00089;

import java.util.Arrays;

/**
 * https://leetcode-cn.com/problems/merge-sorted-array/
 *
 * 88. 合并两个有序数组
 *
 * 给你两个有序整数数组 nums1 和 nums2，请你将 nums2 合并到 nums1 中，
 * 使 nums1 成为一个有序数组。
 *
 * 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
 * 你可以假设 nums1 的空间大小等于 m + n，这样它就有足够的空间保存来自 nums2 的元素。
 */
public class Test00088 {

    public static void main(String[] args) {
        Test00088 test = new Test00088();
        int[] nums1 = {1,2,3,0,0,0};
        int[] nums2 = {2,5,6};

        test.merge(nums1, 3, nums2,3);
        System.out.println(Arrays.toString(nums1));
    }

    public void merge(int[] nums1, int m, int[] nums2, int n) {
        if (n == 0) {
            return;
        }

        int i = m-1;
        int j = n-1;
        int k = nums1.length-1;

        while (i >= 0 && j >= 0) {
            if (nums1[i] >= nums2[j]) {
                nums1[k] = nums1[i];
                i --;
            }else {
                nums1[k] = nums2[j];
                j --;
            }
            k --;
        }

        while (j >= 0) {
            nums1[k] = nums2[j];
            j --;
            k --;
        }
    }

}
